package com.x.dao.user;

import com.x.bean.Achievement;
import com.x.bean.User;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

/**
 * @author 13925
 */
public interface UserDao {
    /**
     * 用户登陆
     * @return User 返回值为用户
     * @param connection 连接数据库
     * @param code 用户编号
     * @param password 密码
     * @param grade 等级
     * @throws SQLException 抛出异常
     */
    public User getLoginUser(Connection connection, String code, String password, int grade) throws SQLException;



    /**
     * 增加用户信息
     * @param connection 连接数据库
     * @param user 用户类
     * @return int
     * @throws SQLException 抛出异常
     */
    public int addUser(Connection connection, User user) throws SQLException;



    /**
     * 通过用户编号删除用户
     * @param connection 连接数据库
     * @param code 用户编号
     * @return int
     * @throws SQLException 抛出异常
     */
    public int deleteUserByName(Connection connection, String code) throws SQLException;



    /**
     * 修改用户信息
     * @param connection 连接数据库
     * @param user 用户类
     * @return int
     * @throws SQLException 抛出异常
     */
    public int updateUser(Connection connection, User user) throws SQLException;



    /**
     * 查询所有用户信息
     * @param connection 连接数据库
     * @return List<user>
     * @throws SQLException 抛出异常
     */
    public List<User> getUserList(Connection connection) throws SQLException;



    /**
     * 通过用户编号查询用户信息
     * @param connection 连接数据库
     * @param code 用户编号
     * @return User
     * @throws SQLException 抛出异常
     */
    public User getUserByCode(Connection connection,String code ) throws SQLException;



    /**
     * 增加成绩
     * @param connection 连接数据库
     * @param achievement 成绩类
     * @return int
     * @throws SQLException 抛出异常
     */
    public int addAchievement(Connection connection, Achievement achievement) throws SQLException;



    /**
     * 通过用户编号和课程名删除成绩
     * @param connection 连接数据库
     * @param code 用户编号
     * @param courseName 课程名
     * @return int
     * @throws SQLException 抛出异常
     */
    public int deleteAchievementByCodeAndCourseName(Connection connection, String code, String courseName) throws SQLException;

    /**
     * 修改成绩
     * @param connection 连接数据库
     * @param achievement 成绩类
     * @return int
     * @throws SQLException 抛出异常
     */
    public int updateAchievement(Connection connection, Achievement achievement) throws SQLException;



    /**
     * 列出学生成绩信息
     * @param connection 连接数据库
     * @param code 用户编号
     * @return List
     * @throws SQLException 抛出异常
     */
    public List<Achievement> getAchievementByCode(Connection connection,String code ) throws SQLException;

}
